import axios from "axios"
import { ElMessage } from 'element-plus'
import config from '@/config/index.js'

// 创建实例
const instance = axios.create({
  baseURL: config.baseApi
})
const NETWORK_ERROR = '网络错误...'
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  })

// 添加响应拦截器
instance.interceptors.response.use((res) => {
  const { code, data, msg } = res.data
  if (code === 200) {
    return data
  } else {
    ElMessage.error(msg || NETWORK_ERROR)
    return Promise.reject(msg || NETWORK_ERROR)
  }
})

function request(options) {
  options.method = options.method || 'get'
  // 关于 get 请求参数的调整
  if (options.method.toLowerCase() === 'get') {
    options.params = options.data
  }
  // 对 mock 的开关做一个处理
  let isMock = config.mock
  if (typeof options.mock !== 'undefined') {
    isMock = options.mock
  }
  // 针对环境做一个处理
  if (config.env === 'prod') {
    // 线上环境不能用 mcok
    instance.defaults.baseURL = config.baseApi
  } else {
    instance.defaults.baseURL = isMock ? config.mockApi : config.baseApi
  }
  return instance(options)
}

export default request
